EV Sales (2020-2024) Delhi, India¶

Data downloaded from Vahan4Dashboard and saved as excel file by Manufacturer. Spreadsheet stored in Folder: Data

S No Maker 2024 2023 2022 2021 2020 TOTAL
0 148 OLA ELECTRIC TECHNOLOGIES PVT LTD 11650 13180 6531 0 0 31361
1 227 YC ELECTRIC VEHICLE 5997 6546 4422 2654 1823 21442
2 205 TVS MOTOR COMPANY LTD 4116 7531 3165 823 0 15635
3 89 HERO ELECTRIC VEHICLES PVT. LTD 61 1199 9916 3028 264 14468
4 17 ATHER ENERGY PVT LTD 2215 3806 2773 744 0 9538
Index(['S_No', 'Maker', '2024', '2023', '2022', '2021', '2020', 'Total'], dtype='object')
C:\Users\risha\AppData\Local\Temp\ipykernel_50792\2961712208.py:18: FutureWarning: 

Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

  sns.barplot(data=df_top_sales, x='Maker', y='Total', palette=light_palette)
C:\Users\risha\AppData\Local\Temp\ipykernel_50792\2961712208.py:18: UserWarning: 
The palette list has fewer values (10) than needed (20) and will cycle, which may produce an uninterpretable plot.
  sns.barplot(data=df_top_sales, x='Maker', y='Total', palette=light_palette)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Analysis of all installed charging station infrastructure in Delhi¶

RUN ALL CELLS TO PRODUCE A HEATMAP OF ALL CHARGING STATIONS IN DELHI

Data successfully fetched and saved to 'battery_swapping_stations.json'
Result structure:
                         Name   Latitude  Longitude
0  Platinum-Motors-Chandigarh  30.711684  76.806394
1         Chandigarh-Zirkapur  30.676800  76.809480
2       GMP Motors Chandigarh  30.702948  76.802712
3    Chandigarh-PGI-Manimajra  30.716930  76.838000
4      Chandigarh-Elante-Mall  30.708830  76.804480
Name Latitude Longitude
0 Platinum-Motors-Chandigarh 30.711684 76.806394
1 Chandigarh-Zirkapur 30.676800 76.809480
2 GMP Motors Chandigarh 30.702948 76.802712
3 Chandigarh-PGI-Manimajra 30.716930 76.838000
4 Chandigarh-Elante-Mall 30.708830 76.804480

Battery swapping stations - source: Sun Mobility¶

ev.delhi.gov.in Data¶

Getting Charging stations¶

                                               address postal_code capacity  \
0          175, Patparganj Industrial Area, Patparganj      110092    3.3kw   
1    A-1/1, Hardev Puri, 100 ft Road, Nathu Colony ...      110025    3.3kw   
2                    Plot no. 1-A, Shiv vihar, Nangloi      110019    3.3kw   
3                     M block Market Gearter Kailash 1      110041    3.3kw   
4                     Shop No-48, NH-5, NIT, Faridabad      110052    3.3kw   
..                                                 ...         ...      ...   
886  Shop No-1, Rajeev Vihar, Khora Colony, Sector-...      201301            
887  Shop No-1, Sector-4, Near Ek Mutri Gol Chakkar...      201301            
888  House No-93, Shop No-PVT-1, Ground Floor, Bloc...      110085            
889  Shop No-RZ-62-K/6A, Ground Flour, Vashist Park...      110046            
890  Shop No-B-308, First Floor, Madanpur Khadar Ex...      110076            

          city     close cost_per_unit country   latitude  longitude  \
0    New Delhi  21:00:00            15   India  28.642213  77.314837   
1    New Delhi  21:00:00            15   India  28.689606  77.298775   
2    New Delhi  21:00:00            15   India  28.661666  77.061585   
3    New Delhi  21:00:00            15   India  28.550284  77.235053   
4    New Delhi  21:00:00            15   India  28.405363  77.305530   
..         ...       ...           ...     ...        ...        ...   
886  New Delhi  20:00:00                 INDIA                         
887  New Delhi  20:00:00                 INDIA                         
888  New Delhi  20:00:00                 INDIA                         
889  New Delhi  20:00:00                 INDIA                         
890  New Delhi  20:00:00                 INDIA                         

         open  ... charger_type if_battery_swap_station,_no._of_dockets  \
0    08:00:00  ...       LEV AC                                     nil   
1    09:00:00  ...       LEV AC                                     nil   
2    10:00:00  ...       LEV AC                                     nil   
3    11:00:00  ...       LEV AC                                     nil   
4    12:00:00  ...       LEV AC                                     nil   
..        ...  ...          ...                                     ...   
886  08:00:00  ...                                                        
887  08:00:00  ...                                                        
888  08:00:00  ...                                                        
889  08:00:00  ...                                                        
890  08:00:00  ...                                                        

            id            vendor     charging_type contact_number name  \
0          S01  Massive Mobility          Charging                       
1          S02  Massive Mobility          Charging                       
2          S03  Massive Mobility          Charging                       
3          S04  Massive Mobility          Charging                       
4          S05  Massive Mobility          Charging                       
..         ...               ...               ...            ...  ...   
886   CNOI0006         Echargeup  Battery swapping                       
887   CNOI0007         Echargeup  Battery swapping                       
888  CDEL00116         Echargeup  Battery swapping                       
889  CDEL00117         Echargeup  Battery swapping                       
890  CDEL00118         Echargeup  Battery swapping                       

                                           coordinates               timing  \
0    {'latitude': '28.642213', 'longitude': '77.314...  08:00:00 - 21:00:00   
1    {'latitude': '28.689606', 'longitude': '77.298...  09:00:00 - 21:00:00   
2    {'latitude': '28.661666', 'longitude': '77.061...  10:00:00 - 21:00:00   
3    {'latitude': '28.550284', 'longitude': '77.235...  11:00:00 - 21:00:00   
4    {'latitude': '28.405363', 'longitude': '77.305...  12:00:00 - 21:00:00   
..                                                 ...                  ...   
886                  {'latitude': '', 'longitude': ''}  08:00:00 - 20:00:00   
887                  {'latitude': '', 'longitude': ''}  08:00:00 - 20:00:00   
888                  {'latitude': '', 'longitude': ''}  08:00:00 - 20:00:00   
889                  {'latitude': '', 'longitude': ''}  08:00:00 - 20:00:00   
890                  {'latitude': '', 'longitude': ''}  08:00:00 - 20:00:00   

    no_of_chargers  
0                2  
1                1  
2               10  
3                1  
4                1  
..             ...  
886             10  
887             10  
888             10  
889             10  
890             10  

[891 rows x 23 columns]
Total charging stations in source: 891
Charging stations obtained in DataFrame: 891
Number of non-nil entries: 21
(1442, 24)
Index(['address', 'postal_code', 'capacity', 'city', 'close', 'cost_per_unit',
       'country', 'latitude', 'longitude', 'open', 'payment_modes', 'staff',
       'available', 'charger_type', 'if_battery_swap_station,_no._of_dockets',
       'id', 'vendor', 'charging_type', 'contact_number', 'name',
       'coordinates', 'timing', 'no_of_chargers', 'station_type'],
      dtype='object')
array([2, 1, 10, 5, 3, 36, 18, 26, 34, 4, 20, 7, 12, 24, 6, 16, 8, 44, 14,
       30, 42, 40, 50, 28, 46, 22, 32, <NA>], dtype=object)

Visualizing all charging infrastructure (Charging Stations and Battery Swapping Stations)

Total stations in Delhi area: 1173
                                             address  postal_code capacity  \
0        175, Patparganj Industrial Area, Patparganj     110092.0    3.3kw   
1  A-1/1, Hardev Puri, 100 ft Road, Nathu Colony ...     110025.0    3.3kw   
2                  Plot no. 1-A, Shiv vihar, Nangloi     110019.0    3.3kw   
3                   M block Market Gearter Kailash 1     110041.0    3.3kw   
4                   Shop No-48, NH-5, NIT, Faridabad     110052.0    3.3kw   

        city     close  cost_per_unit country   latitude  longitude      open  \
0  New Delhi  21:00:00           15.0   India  28.642213  77.314837  08:00:00   
1  New Delhi  21:00:00           15.0   India  28.689606  77.298775  09:00:00   
2  New Delhi  21:00:00           15.0   India  28.661666  77.061585  10:00:00   
3  New Delhi  21:00:00           15.0   India  28.550284  77.235053  11:00:00   
4  New Delhi  21:00:00           15.0   India  28.405363  77.305530  12:00:00   

   ... if_battery_swap_station,_no._of_dockets   id            vendor  \
0  ...                                     nil  S01  Massive Mobility   
1  ...                                     nil  S02  Massive Mobility   
2  ...                                     nil  S03  Massive Mobility   
3  ...                                     nil  S04  Massive Mobility   
4  ...                                     nil  S05  Massive Mobility   

  charging_type contact_number name  \
0      Charging            NaN  NaN   
1      Charging            NaN  NaN   
2      Charging            NaN  NaN   
3      Charging            NaN  NaN   
4      Charging            NaN  NaN   

                                         coordinates               timing  \
0  {'latitude': '28.642213', 'longitude': '77.314...  08:00:00 - 21:00:00   
1  {'latitude': '28.689606', 'longitude': '77.298...  09:00:00 - 21:00:00   
2  {'latitude': '28.661666', 'longitude': '77.061...  10:00:00 - 21:00:00   
3  {'latitude': '28.550284', 'longitude': '77.235...  11:00:00 - 21:00:00   
4  {'latitude': '28.405363', 'longitude': '77.305...  12:00:00 - 21:00:00   

   no_of_chargers      station_type  
0             2.0  Charging Station  
1             1.0  Charging Station  
2            10.0  Charging Station  
3             1.0  Charging Station  
4             1.0  Charging Station  

[5 rows x 24 columns]
station_type
Charging Station            737
Battery Swapping Station    436
Name: count, dtype: int64

HEATMAP¶

C:\Users\risha\AppData\Local\Temp\ipykernel_50792\4172852508.py:14: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df_delhi['cluster'] = dbscan.labels_
Make this Notebook Trusted to load map: File -> Trust Notebook
array([ 0,  1,  2, -1,  3, 25,  4,  5,  6,  7, 15,  8, 14, 16, 11,  9, 10,
       12, 13, 17, 28, 18, 19, 20, 21, 22, 23, 24, 26, 27, 29, 30],
      dtype=int64)
C:\Users\risha\AppData\Local\Temp\ipykernel_50792\1633298464.py:12: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df_delhi['cluster'] = dbscan.labels_
Make this Notebook Trusted to load map: File -> Trust Notebook
No description has been provided for this image

Biggest Charging station clusters in Delhi¶

C:\Users\risha\AppData\Local\Temp\ipykernel_50792\2685989848.py:34: FutureWarning: 

Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

  sns.countplot(x='cluster_label', data=df_clusters, palette='viridis', order=sorted(df_clusters['cluster_label'].unique()))
No description has been provided for this image
Maps have been saved as 'delhi_station_clusters_map.html' and 'delhi_station_density_heatmap.html'.

Further Analysis¶

using station specifications like - 'capacity','cpst_per_unit', and 'charger_type'

[  0.   15.    7.    2.2   3.3  22.  142.   50.   48.    8.   20.   12.
  40.   32.   16.   88.   24.    4.   28.   60.   84.   80.  100.   72.
  56.   36.   92.   44.   64. ]
[ 15.   20.    2.    5.   10.   12.   30.   25.   40.   50.  100.   70.
   1.   45.  200.   13.  350.   80.   18.   90.    9.5]
['AC' 'Unknown' 'DC']
C:\Users\risha\AppData\Local\Temp\ipykernel_50792\2831129267.py:19: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.

For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.


  df_delhi_clean['cost_per_unit'].fillna(median_cost, inplace=True)
C:\Users\risha\AppData\Local\Temp\ipykernel_50792\2831129267.py:34: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.

For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.


  df_delhi_clean['capacity'].fillna(0, inplace=True)

Charger Type Distribution Map

Make this Notebook Trusted to load map: File -> Trust Notebook

Cost Per Unit

Charging Capacity

Make this Notebook Trusted to load map: File -> Trust Notebook